package com.spring.aware;

import com.spring.beanpostprocessor.BeanPostProcessor;


/**
 * Bean 的 实例化接口
 */
public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {
	
	/**
	 * 在 bean 实例化之前调用
	 *
	 * 这里可以自定义一个实例化逻辑，返回 null 表示 不做什么操作，继续走后续逻辑
	 * 返回 非null  值对象 则表示 这个接口已经完成对象实例化工作，不需要走后续逻辑了
	 */
	default Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) {
		return null;
	}
	
	/**
	 * 在 bean 实例化之后调用,
	 * 默认返回true , 继续后面的流程， 如果返回 false,则阻止后续的属性注入
	 */
	default boolean postProcessAfterInstantiation(Object bean, String beanName) {
		return true;
	}
	
}
